(define-syntax or
  (lambda (exp env)
    (list (syntax-quote let)
	  (list
	   (list (syntax-quote tmp)
		 (syn-car (syn-cdr exp))))
	  (list (syntax-quote if)
		(syntax-quote tmp)
		(syntax-quote tmp)
		(syn-car (syn-cdr (syn-cdr exp)))))))

(define t-1
  (print (or #f 1))
  (print (or 2 3))
  (print (or (or #f #f) 4))
  (print (or #f (or #f 5)))
  (print (or (or #f #t) 4))
  (print (or #f (or #t 5)))
  (let ((tmp 6))
    (print (or #f tmp))))
